﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using MakeIT.Deo.Negocios;

namespace MakeIT.Deo.Apresentacao
{
    public partial class ProdutosSubFamilia : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                if (Request["idSubFamilia"] != null)
                {
                    try
                    {
                        int idSubFamilia = Int32.Parse(Request["idSubFamilia"]);
                        subfamilia sf = new SubFamiliaBO().RecuperaSubFamilia(idSubFamilia);
                        this.LabelSubFamilia.Text = sf.SubFamilia;

                        Util.logAcesso("Produto x SubFamilia", null, null, idSubFamilia, null);

                        List<subfamilia> listaSubFamilias = new SubFamiliaBO().RecuperaSubFamilia(idSubFamilia, null);
                        this.RepeaterSubFamilia.DataSource = listaSubFamilias;
                        this.RepeaterSubFamilia.DataBind();
                    }
                    catch (Exception ex) { }
                }
                else if (Request["idProduto"] != null)
                {
                    try
                    {
                        int idProduto = Int32.Parse(Request["idProduto"]);
                        ProdutoBO produtoBO = new ProdutoBO();
                        List<produtoxsubfamilia> listPxsf = produtoBO.RecuperaProdutoXSubFamilia(idProduto, null);

                        Util.logAcesso("Produto x SubFamilia", null, null, null, idProduto);

                        List<subfamilia> listSubFamilias = new List<subfamilia>();
                        if (listPxsf != null) listPxsf.ForEach(i => listSubFamilias.Add(new SubFamiliaBO().RecuperaSubFamilia(i.IdSubFamilia)));
                        if (listSubFamilias != null) this.LabelSubFamilia.Text = String.Join(", ", listSubFamilias.Select(i => i.SubFamilia).ToArray());
                        this.RepeaterSubFamilia.DataSource = listSubFamilias;
                        this.RepeaterSubFamilia.DataBind();
                    }
                    catch { throw; }
                }
                else
                {
                    try
                    {
                        int idFamilia = Int32.Parse(Request["idFamilia"]);
                        familia f = new FamiliaBO().RecuperaFamilia(idFamilia);
                        this.LabelSubFamilia.Text = f.Familia;

                        Util.logAcesso("Produto x Familia", null, idFamilia, null, null);

                        List<subfamilia> listaSubFamilias = new SubFamiliaBO().RecuperaSubFamilia(null, null, null, idFamilia, false);
                        this.RepeaterSubFamilia.DataSource = listaSubFamilias;
                        this.RepeaterSubFamilia.DataBind();
                    }
                    catch (Exception ex) { }
                }
            }
        }

        protected void RepeaterSubFamilia_OnItemDataBound(object sender, RepeaterItemEventArgs e)
        {

            RepeaterItem item = e.Item;
            subfamilia subFamilia= (subfamilia)e.Item.DataItem;

            if ((item.ItemType == ListItemType.Item) ||
                (item.ItemType == ListItemType.AlternatingItem))
            {
                GridView gridViewItens = (GridView)item.FindControl("GridViewItens");
                gridViewItens.DataSource = new ProdutoBO().RecuperaProduto(null, null, null, subFamilia.IdSubFamilia, false);
                gridViewItens.DataBind();
            }
        }

        protected void ButtonAddToCart_Click(object sender, EventArgs e)
        {
            cliente clienteVO = (cliente)this.Session["customerActive"];
            if (clienteVO == null)
            {
                Util.ExibeAlert(this, "Efetue o login ou cadastre-se para poder solicitar orçamentos, obrigado.");
                return;
            }
            else
            {
                OrcamentoBO orcamentoBO = new OrcamentoBO();
                orcamento orcamentoVO = null;
                orcamentoitem orcamentoItemVO = null;

                //Pegar o header do orcamento
                int? idProduto = int.Parse(((ImageButton)sender).CommandArgument);
                List<orcamento> listOrcamentos = orcamentoBO.RecuperaOrcamento(null, clienteVO.IdCliente, "C");
                if (listOrcamentos == null || listOrcamentos.Count == 0)
                {
                    orcamentoVO = new orcamento();
                    orcamentoVO.DataSolic = DateTime.Today;
                    orcamentoVO.IdCliente = clienteVO.IdCliente;
                    orcamentoVO.Status = "C";

                    orcamentoBO.SalvaOrcamento(orcamentoVO, true);
                }
                else
                {
                    orcamentoVO = listOrcamentos[0];
                }

                //Pegar o item do orcamento
                OrcamentoItemBO orcamentoItemBO = new OrcamentoItemBO();
                List<orcamentoitem> listOrcamentoItens = orcamentoItemBO.RecuperaOrcamentoItem(null, orcamentoVO.IdOrcamento, idProduto);
                if (listOrcamentoItens == null || listOrcamentoItens.Count == 0)
                {
                    orcamentoItemVO = new orcamentoitem();
                    orcamentoItemVO.IdOrcamento = orcamentoVO.IdOrcamento;
                    orcamentoItemVO.IdProduto = idProduto;
                    orcamentoItemVO.Quantidade = 0;
                    orcamentoItemVO.ValorUnit = 0.0M;
                    orcamentoItemVO.ValorTotal = 0.0M;
                    orcamentoItemVO.Obs = "";
                    orcamentoItemBO.SalvaOrcamentoItem(orcamentoItemVO, true);
                }
                else{
                    orcamentoItemVO = listOrcamentoItens[0];
                }
                Util.ExibeAlert(this, "Produto foi adicionado ao carrinho de orçamentos.");

            }
        }

        protected void ButtonFoto_Click(object sender, EventArgs e)
        {
            string idProduto = ((ImageButton)sender).CommandArgument;
            produto produtoVO = new ProdutoBO().RecuperaProduto(int.Parse(idProduto));
            this.Image2.ImageUrl = "~/DownProduto.aspx?type=large&idProduto=" + idProduto + "&controle=" + DateTime.Now.Ticks.ToString();
            this.Label2.Text = produtoVO.Produto;
            this.PanelFoto.Visible = true;
        }
        protected void ButtonFotoSubFamilia_Click(object sender, EventArgs e)
        {
            string idSubFamilia = ((ImageButton)sender).CommandArgument;
            subfamilia subFamiliaVO = new SubFamiliaBO().RecuperaSubFamilia(int.Parse(idSubFamilia));
            this.Image2.ImageUrl = "~/DownSubFamilia.aspx?type=large&idSubFamilia=" + idSubFamilia + "&controle=" + DateTime.Now.Ticks.ToString();
            this.Label2.Text=subFamiliaVO.SubFamilia;
            this.PanelFoto.Visible = true;
        }
        protected void ButtonFotoClose_Click(object sender, EventArgs e)
        {
            this.PanelFoto.Visible = false;
        }
    }
}
